Java Thread.sleep 最短时间
全部标签 在我的应用程序中,线程需要暂停很短的时间(100秒的时钟周期)。暂停的一种方法是调用nanosleep,但我想它需要对内核进行系统调用。现在我想暂停而不去内核。请注意,我有足够的内核来运行我的线程,并且我将每个线程绑定(bind)到一个单独的内核,因此即使是可以让内核暂停一会儿的指令也是好的。我正在使用x86。我只想让线程在暂停时停止。我不想要一个繁忙的循环或对内核的系统调用。是否有可能做到这一点?我可以暂停线程的最短时间是多少? 最佳答案 _mm_pause在忙等待循环中是要走的路。不幸的是,它提供的延迟会随每个处理器系列而变化:
我写了一个实用程序来与TomTomGPSwatchesoverBluetooth对话,并试图让它作为一个运行后忘记后台守护进程很好地运行。程序定期与GPS设备通信,然后sleeps一段时间,直到再次需要它。我注意到sleep()与系统挂起有奇怪的交互:当我进入系统挂起(运行Linux3.16.0内核的笔记本电脑)然后唤醒计算机备份时,sleep似乎没有注意到暂停时间。例如,采用以下sleep.c:#include#include#includeintmain(intargc,char**argv){time_tt=time(NULL);printf("sleepat:%s",ctime
我需要调查/测试Linux上某些代码在close可能被信号处理程序(有或没有SA_RESTART)中断的情况下的行为。让close系统调用休眠一段可测量的时间窗口最方便的设置是什么,在此期间我可以尝试用信号触发进程?一些想法:故意缓慢/无响应的NFS安装自定义FUSE驱动程序但是由于这些设置起来有点麻烦,我想知道是否有更多现成的东西可以提供所需的行为。 最佳答案 如果没有人有更好的主意...您可以实现自己的字符设备驱动程序。从LinuxDeviceDrivers(3rdedition)中第3章的模板开始,并调整它除了在close()
这两个功能哪个更好#includeintclock_nanosleep(clockid_tclock_id,intflags,conststructtimespec*rqtp,structtimespec*rmtp);或#includeintnanosleep(conststructtimespec*rqtp,structtimespec*rmtp); 最佳答案 clock_nanosleep相对于nanosleep的优势是:您可以指定休眠的绝对时间until,而不是休眠的时间间隔。这对实时(挂钟)时钟有影响,可以由管理员或ntpd
这个问题在这里已经有了答案:Python:PassorSleepforlongrunningprocesses?(7个答案)关闭9年前。我一直在考虑在python脚本中使用time.sleep(n)以使其以不同的时间间隔执行作业。伪代码如下所示:total_jobs=[...]next_jobs_to_run=next_closest(total_jobs)min_time_to_wait=closestTime(nextJobsToRun)waituntilmin_time_to_waitrunthemallgetnextjobs总而言之,程序会休眠直到需要执行下一个作业。它运行作业
根据Wikipedia,forkbomb:(){:|:&};:可以用zsh命令停止while(sleep100&!)do;done,这应该会产生sleep100个进程,直到所有forkbomb进程都消失。这看起来很神奇;它是如何工作的?我特别好奇“&!”究竟是什么?意味着。bash中等效的命令是什么样的? 最佳答案 fork-bomb起作用的原因是因为在任何时候可以运行的进程数量是有限的,而fork-bomb就是为了填补这个限制而设计的。因为您提供的forkbomb代码如果不能产生子进程就会死掉,所以父进程实际上并没有闲逛,但是子进
我一直在寻找一种方法来找出我的程序花费时间的地方。我读了perftutorial并尝试按照那里的描述描述sleep时间。我写了最简单的程序来分析:#includeintmain(){sleep(10);return0;}然后我用perf执行它:$sudoperfrecord-esched:sched_stat_sleep-esched:sched_switch-esched:sched_process_exit-g-o~/perf.data.raw./a.out[perfrecord:Wokenup1timestowritedata][perfrecord:Capturedandwro
这是对我之前问题的扩展Howdoesblockingmodeinunix/linuxsocketsworks?我现在从Internet上收集到的信息是,所有调用阻塞调用的进程都将进入休眠状态,直到调度程序找到解除阻塞的原因。原因可能因缓冲区为空、缓冲区已满或任何其他情况而异。但是,这是否可以成为一种有效的实时方式,比方说硬/稳固的实时应用程序?因为当解除阻塞条件成立时进程不会解除阻塞,而是当调度程序给他他的CPU分片并且解除阻塞条件都为真时。如果你想要一个响应式解决方案,我不认为“自旋锁”或“忙等待”是正确的方法,CPU片被浪费,并且整个系统将变得无响应或可能react迟钝。有人可以清
来自WikipediaIncryptography,atimingattackisasidechannelattackinwhichtheattackerattemptstocompromiseacryptosystembyanalyzingthetimetakentoexecutecryptographicalgorithms.实际上,为了防止定时攻击,我使用了以下来自thisanswer的函数:functiontimingSafeCompare($safe,$user){//Preventissuesifstringlengthis0$safe.=chr(0);$user.=chr
是什么导致了我在top中看到的这些休眠进程?如果我要调用PHP的sleep()函数,它会增加我在top中看到的sleeping计数吗?sleep数量多有什么缺点吗? 最佳答案 一个进程在阻塞时处于休眠状态,正在等待某事。例如,它可能调用了read()并正在等待来自网络流的数据。sleep()确实是让进程休眠一段时间的一种方法。然而,sleep是除大量计算绑定(bind)进程之外的所有进程的正常状态——sleep本质上是一个进程在不做任何其他事情时所做的事情。大多数进程处于sleep状态是正常情况-如果不是这种情况,则表明您需要更多的